iT邦幫忙

2024 iThome 鐵人賽

0
自我挑戰組

從零開始的Python到Django應用開發系列 第 10

Day 10. Modules and Packages 你不可不知道的觀念

  • 分享至 

  • xImage
  •  

Dear All:
各位程式碼越寫越多,我們考慮到的不只是程式碼能不能動,之外還要考慮到後續的維護性。
就讓我來介紹 Modules and Package,接下來我會一一介紹什麼是模組這個方便的東西!


1. 什麼是模組?

Python 中的模組其實就是一個 Python 檔案,裡面可以包含函式、類別、變數等等。你可以把這個檔案引入到其他程式裡,讓你的程式碼更有重複利用的價值。

範例:
假設你有一個名叫 my_module.py 的模組,內容是這樣的:

# my_module.py

def greet(name):
    return f"Hello, {name}!"

PI = 3.14159

接著你可以在另一個檔案中使用這個模組:

# main.py

import my_module

print(my_module.greet("Alice"))
print(f"圓周率的值是:{my_module.PI}")

這樣是不簡潔很多!不用所有東西都塞到同一個檔案內。


2. 什麼是套件?

套件就是一個目錄,裡面包含了多個模組,並且會有一個 init.py 檔案。這個檔案告訴 Python 這是一個套件,能夠讓你把相關的模組組織起來,變得更有條理。

範例:
假設你有一個目錄結構長這樣:

my_package/
    __init__.py
    module1.py
    module2.py
  • init.py 是套件的初始化檔案,可以是空的或包含一些程式碼。
  • module1.py 和 module2.py 則是我們的模組。

module1.py 內容:

# module1.py
def function1():
    return "這是來自模組1的函式1"

module2.py 內容:

# module2.py
def function2():
    return "這是來自模組2的函式2"

現在,如果你執行:

# main.py

from my_package import module2

print(module2.function2())

你會看到 function2 把 module1 裡的 function1 也一起用了。


4. 圖解結構

為了讓大家更好理解模組和套件的運作,這裡畫個簡單的結構圖:

my_package/                 <- 套件目錄
    __init__.py             <- 套件初始化檔案
    module1.py              <- 模組1
    module2.py              <- 模組2

main.py                     <- 匯入套件的主程式
  • main.py 匯入了 my_package 中的 module1 和 module2。
  • init.py 是必要的,它標記這個目錄是一個 Python 套件。

5. 了解 name 變數

每個 Python 模組都有一個特殊變數 name。當模組直接執行時,name 的值會是 "main"。這在你只想要某些程式碼在模組被執行時運行(而不是匯入時)特別有用。

範例:

# my_module.py

def greet(name):
    return f"Hello, {name}!"

if __name__ == "__main__":
    print(greet("World"))  # 這段程式只會在 my_module.py 被直接執行時跑

當你直接執行 my_module.py,它會印出 "Hello, World"。但是如果你從另一個程式中匯入它,這段程式碼就不會執行。

6. 安裝第三方套件

Python 有很多強大的第三方套件可以使用,這些套件都在 Python Package Index (PyPI) 上。你可以透過 pip 來安裝它們。

安裝範例:

pip install requests

安裝後,你就可以在你的程式裡匯入這個套件來使用:

import requests

response = requests.get("https://api.github.com")
print(response.json())

7. 模組與套件組織程式碼的最佳做法

  • 使用模組來將相關的函式與類別放在一起。
  • 使用套件來組織你的模組,讓程式碼更易讀和維護。
  • 避免將太多程式碼放在一個模組裡,適當地拆分程式碼。
  • 模組和套件的命名最好用小寫字母和底線,這樣更清晰。

上一篇
Day 09. Coding Practice 你應該要有的Py能力(解題篇)
系列文
從零開始的Python到Django應用開發10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言